package com.hua.fanqiemall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hua.common.utils.PageUtils;
import com.hua.fanqiemall.product.entity.AttrEntity;
import com.hua.fanqiemall.product.vo.AttrGroupRelationReqVo;
import com.hua.fanqiemall.product.vo.AttrRspVo;
import com.hua.fanqiemall.product.vo.AttrReqVo;

import java.util.List;
import java.util.Map;

/**
 * 商品属性
 *
 * @author luoweihua
 * @email lwh_559@163.com
 * @date 2021-12-09 22:14:01
 */
public interface AttrService extends IService<AttrEntity> {

    /**
     * 原始分页查询
     * @param params 查询参数
     * @return queryPage
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 保存商品属性
     * @param attrReqVo 商品属性
     */
    void saveAttr(AttrReqVo attrReqVo);
    /**
     * 查询商品属性
     * @param params 查询参数
     * @param catelogId 分类ID
     * @param attrType 属性类型
     * @return PageUtils
     */
    PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String attrType);
    /**
     * 获取商品属性信息
     * @param attrId 商品属性id
     * @return AttrRspVo
     */
    AttrRspVo getAttrInfo(Long attrId);
    /**
     * 更新商品属性信息
     * @author luoweihua
     * @date 2022/1/11 13:58
     * @param attrReqVo 属性
     */
    void updateAttr(AttrReqVo attrReqVo);

    /**
     * 根据分组id找到所有关联的属性
     * @author luoweihua
     * @date 2022/1/11 16:16
     * @param attrGroupId 分组id
     * @return List<AttrEntity>
     */
    List<AttrEntity> getRelationAttr(Long attrGroupId);

    /**
     * 获取属性分组没有关联的其他属性
     * @author luoweihua
     * @date 2022/1/11 18:15
     * @param params 查询参数
     * @param attrGroupId 属性分组id
     * @return PageUtils
     */
    PageUtils getNoRelationAttr(Map<String, Object> params, Long attrGroupId);

    /**
     * 批量删除属性与分组的关联关系
     * @author luoweihua
     * @date 2022/1/11 16:39
     * @param reqVoListVo 删除列表
     */
    void deleteRelation(List<AttrGroupRelationReqVo> reqVoListVo);
}

